package dao;

import dominio.Aula;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;

/**
 *
 * @author eagle
 */
public class AulaDao {

    private EntityManager em;

    public AulaDao(EntityManager em) {
        this.em = em;
    }
    Aula a = new Aula();

    /**
     * Metodo de creacion funcionando 100% con autoincrement
     */
    public Aula crearAula(String nombreAula, int capacidadAula, int disponibleAula) {
        a.setNombreAula(nombreAula);
        a.setCapacidadAula(capacidadAula);
        a.setDisponibleAula(disponibleAula);
        em.persist(a);
        return a;
    }

    public Aula encontrarAula(Integer idAula) {
        return em.find(Aula.class, idAula);
    }

    public Aula encontrarAula(String nombreAula) {
        Query q = em.createQuery("SELECT a FROM Aula a WHERE a.nombreAula='" + nombreAula + "'");
        if (q.getResultList().isEmpty() == true) {
            return null;
        }
        else {
            a = (Aula) q.getSingleResult();
            return a;
        }
    }

    public void borrarAula(Integer idAula) {
        a = encontrarAula(idAula);
        if (a != null) {
            em.remove(a);
        }
    }

    public Aula actualizarAula(Integer idAula, String nombreAula, int capacidadAula, int disponibleAula) {
        a = em.find(Aula.class, idAula);
        if (a != null) {
            a.setNombreAula(nombreAula);
            a.setCapacidadAula(capacidadAula);
            a.setDisponibleAula(disponibleAula);
        }
        return a;
    }

    public List encontrarAulas() {
        Query query = em.createQuery("SELECT a.nombreAula FROM Aula a");
        List<Aula> lista = query.getResultList();
        return (lista);
    }

    public int devolverId() {
        int i = 0;
        Query q = em.createQuery("SELECT a.idAula from Aula a ORDER BY a.idAula DESC LIMIT 1");
        if (q.getResultList().isEmpty() == true) {
            return 1;
        }
        else {
            i = (Integer) q.getResultList().get(0);
            return (i + 1);
        }
    }
}
